• Version 0.17 (8.5.2001)(dc.e: really exactly 22057 lines :) , 694035 bytes):
    • Added inlined PowerPC assembly (ASM/ENDASM)
      • all standard mnemonics supported
      • most of extended mnemonics supported
      • easy usage of local/global variables directly in the assembly code via special mnemonics (lw, sw, etc.)
    • new feature TDEF for definition of custom types (like C's typedef)
      • binary modules support it ofcourse too
    • finally added UNIONs to binary modules!!!
    • improved OBJECT support
      • You can now define internal objects with OBJECT and ENDOBJECT keywords
      • You can use [ and ]:name instead of OBJECT name and ENDOBJECT keywords inside the object
      • Added OFFSET and RELOFS keywords and a new feature to setup the item positions in the object
      • Added ALIGN keyword
      • Improved unions, each can be now followed with OF keyword like the OBJECT keyword itself
      • Added C alike unions
    • CASE can now handle equations (CASE a+1 TO b-1,10,11)
    • added support for empty arguments (like: func(,1,,3), or: [1,2,,3,,]:list)
    • now prints all unused procedures
    • improved AmigaE support:
      • AmigaE support is enabled by '.e' extension in source name
      • all variables/objects and it's items names are converted to lower case
      • all constants are converted to upper case
      • I can't recomend to write bigger E projects in D, but if You need it You can switch to original AmigaE or CreativE...
    • powerd.lib news
      • BitSize(0) now returns 0 instead of 1
      • WriteF() function added
      • StrCmpNC() (case free string compare) function added
      • lots of powerpc native assembly functions added
      • and some less important improvements
    • modules news
      • graphics/gfxbase.m should work
    • minor changes in handling 68k library functions in the ppc native code.
      • all the modules in the dmodules: directory (not in it's subdirectories) must now have it's own link library in d:lib/modules directory. Take a look at new LIBGEN=LG/K cli argument, which will generate for You all the 68k function launchers for the ppc.
    • removed NOPP argument
    • bug fixes
      • FOR a:=0 TO -1 made one loop, fixed
      • BitSize(0) now returns 0 instead of 1
      • removed infinite loop when object item wasn't found
      • OPT NOHEAD didn't produce executable file, only the object file
      • if expressions were build only from constants and all of them were integers, the result was computed also as an integer, also if the destination was float (DEFD a=1/2), fixed, thanks to Maciej Po³yga!
      • post and pre decrementation/incrementation can be now combined (++a--)
      • definition of local constants can contain also global constants
      • fixed a bug in static list definition
      • fixed bug in PowerPC optimizations (blr,blr)
      • fixed bug in FOR loop
      • fixed problem with stack in ppc code
      • fixed lots of another ppc related problems
      • UNTILN now works
      • compiler reports if two or more procedures with the same name appeared
      • division by zero when compiling a module fixed
      • sources can now end with a comment (/* */) without ending linefeed
      • x[]++:=y now works (but ++x[]:=y still doesn't, sorry)
      • no more error reporting, when JUMPing to a local label
      • items after UNIONs has now correct offset (very long standed bug)
      • binary modules containing objects was saved incorrectly (althought was working), such modules doesn't need to be recompiler, but I recomend it :)
      • GM=GENMODULE/K argument now does always correct return types
      • fixed some sign extensions in functions in powerd_ppc.m module
      • fixed external procedure definitions in binary modules, the binary modules containing external procedures definitions (all in dmodules:lib) are changed
      • fixed a bug in global data definition for PowerPC code
      • removed optimization which caused a bug if SUB was used
      • known enforcer hits removed
      • and several more or less important fixes


  • Version 0.16 (31.12.2000)(dc.e: really exactly 20000 lines :) , 622424 bytes):
    • added currently limited PowerPC support!!!
    • added quoted expressions
    • improved equation generator, now creates much better and safer code
      • multiple conditions are now also allowed (a
      • now work stuff like a,b,c+=test() correctly
      • completely changed stack usage
      • added NEXTIF keyword
      • new tool pc - PowerD Project Compiler v0.4, it simplifies multiple source compilation
      • improved Val() and RealVal() functions
      • all errors/warnings are now written also into file 't:powerd.err.log' file
      • added support for multiple names per object
      • highly improved static list writing routine, much more flexible
      • improved some parts of documentation to be more lucid
      • improved LIBRARY definition, now allows You to define also PPC functions in library
      • LONG <label> now works
      • new option WB added to allow to start Your proggies also from wb directly (via icon)
        • added wbstartup.o
        • added EXEICON option
      • new SUB feature added
      • added cli switch DF=DELFILES/S which enables deleting of #?.ass and #?.o files when executable file is succefuly generated
      • added hash table for macro finding what improves speed of preprocessing pass upto 20 times
      • added hash table for object finding what improves speed of working pass a lot
      • added large data model, now is possible to compile files that produces executables longer then 32 kilos
      • local constants works again
      • added some new warnings and error messages
      • improved multiple value returning, now doesn't require definition for longs, but warns!
      • improved preprocessor comment handling, line numbers on errors should be again exact
      • recursive comments works again
      • item names in object's definitions can now start also with numbers
      • comments in macros are now better handled/removed
      • added new functions to powerd.lib
        • new string functions: LoChar(), HiChar(), VStringF(), VEStringF()
        • new miscelaneous functions: Double(), Float(), PutDouble(), PutFloat(), ReByte(), ReWord(), ReUByte(), ReUWord()
        • new quoted expression functions: Even(), Exists(), ForAll(), MapList()
      • shortest functions from powerd.lib are rewritten to be inlined
      • added and improved some examples
      • added support for C-like constants (ie: 0x10 or 0b110011)
      • added rtgmaster.library and chunky.lib support
        • chunky.lib contains several functions to work with 8/24/32bit chunky graphics
        • added two examples of rtg and chunky usage
      • added module cache, extreme speedup of module loading
        • added dcache tool to show and/or flush the cache
      • object oriented programming is temporarily removed because of many improvements, sorry, hope it will work in 0.17
      • fixed several bugs
        • several bugs in inline assembly
        • preprocessor's keywords didn't work, except #define
        • binary module loading/saving, recursive module now works
        • very old and stupid bug in RealStr() and RealEStr() functions
        • BitSize() now returns correct bit field size also if it is one bit wide
        • Bounds() function fixed
        • ELSEIFN and ELSEWHILEN now works
        • modulo (a\b) now works correctly in all cases
        • lists in lists are now handled correctly
        • backslash ('\') in strings now works
        • CASE xxx TO yyy works again
        • multi-dimensional arrays (x[i,j,k]) now works
        • multi-level pointers (x[i][j][k]) now works
        • x[] is now correctly x[0]
        • and more... [and probably some new added :P]
      • added ALIGN keyword to allow better alignment of object items
      • REPROC feature changed and improved
      • improved local variables, now allows also local static variables (SDEF)
      • added ASMPPC/ENDASM for ppc routines in 68k code.
      • improved function reading, You are now allowed to use code like here:
        • x().a:=1, where x() is a function that returns a pointer to object, which contains an item called a.
        • x()[3]:=2, where x() is a function, that returns a pointer to a list.


    • Version 0.15 (8.5.2000)(dc.e: 14387 lines, 453366 bytes):
      • added localization support (currently very limited, czech only)
      • maximal length of single string expanded from 256 characters to 1024 characters
      • improved preprocessor (thanx to Miklos Nemeth for bug-reports)
        • added #include,#undefine, #* (where * is a number) keywords
        • added DEBUG macro when DEBUGSYM option active
        • preprocessor now removes comments => faster Reading pass
        • high speedup - much more eficient macro reading
        • removed many and many bugs and enforcer hits
      • improved object reading:
        • new member separator "/" for multiple members with same type
      • stack lists changed to static lists, like in AmigaE => faster (in some cases shorter)
        • also constant-only equations are now recognized => shorter code
      • inline assembler (ASM) now works much better
      • again added dmod - powerd binary module viewer
      • added New() and Free() functions
      • You are now able to use SELECT <const>;CASE func() etc.
      • removed bugs in:
        • string optimizations
        • function calling
        • inline lists
        • powerd.lib, some functions rewritten to be faster and/or shorter
        • global lists now works also with non objects
        • heavy bug in SELECT with arrays
        • and many other
      • as You can see, documentation in HTML :)
        • This is highly undone, I'm heavily working on it, but currently not all parts are rewritten. Thanks to Richard Korber for his great GuideML V1.5 converter.


    • Version 0.14 (2.4.2000)(dc.e: 13185 lines, 409393 bytes):
      • removed FPU OPTion/argument
        • improved CPU/MACHINE OPTion/argument
        • improved #?.o/#?.lib file recognition, no more fpu/ieee problems
      • in 0.13: macros couldn't be used
      • removed small bug in constants in binary modules
      • preprocessor is now completely global => new PreProcessong pass added
      • removed bug in constant conversion (eg: DEFD q=10 had to be used as DEFD q=10.0 before)
      • removed also other bugs and some enforcer hits


    • Version 0.13 (5.3.2000)(dc.e: 12688 lines, 395821 bytes):
      • added REPROC/DREPROC feature
      • added RAISE feature
        • Raise() moved to powerd.lib
      • improved retyping
      • removed many bugs
        • unsigned word and unsigned byte storing
      • Generating pass renamed to Reading pass :)
      • nearly all types changed, so old binary modules won't work, use new or ascii :(
        • improved multi-dimensional arrays and pointers
      • added generated assembler source description in this document. (highly undone)
      • swap (:=:) can be now used also for different types
      • whole asm-writer has been rewritten, now allows much faster and better optimizations
        • many new optimizations (currently are all optimizations always on)
        • about 100 kB of code rewritten
      • added some new functions to powerd.lib:
        • DupStr(), DupEStr(), NewStr(), RemStr(), DupStrPooled(), DupEStrPooled(), NewEStrPooled(), RemStrPooled(), RemEStrPooled(), NewStrPooled()
      • in many cases improved register handling
      • improved finding routines (it can now find what it couldn't find before :)
        • it should never more try to find on illegal addressed, now about 40% faster!
      • object oriented programming should now work better
      • if two or more same arguments/variables, an error appear
      • return values preset to zeros, so not su much dull messages :) (but still some)
      • changed string and list order, now it has same order as in dsource
      • renumbered errors
      • nonfpu floats are currently not completed, complete version will be released asap!
        • also powerd_ieee.lib not completed, sorry
      • about 40 kB shorter !!!
      • dmod not included, I had not enough time to complete it, sorry


    • Version 0.12 (4.2.2000)(dc.e: 12345 lines, 396396 bytes):
      • removed bug in optimizations
      • removed some bugs in docs :)
        • powerd.lib functions added into index of this document
        • some new things added into index
      • added few new functions (intuition, graphics, pools):
        • OpenW(), CloseW(), OpenS(), CloseS(), SetStdRast()
        • Plot(), Line(), Box(), Circle(), Ellipse(), Colour(), SetColour()
        • AllocVecPooled(), FreeVecPooled(), SizePooled()
      • removed some bugs in binary modules
        • saved binary modules has now slightly different format
        • added EDEFs and #defines
        • added dmod tool, to show binary modules
      • improved macros, now You can use #ifdef, #ifndef, #else and #endif
      • proprocessor can from now convert: xxx:=.yyy to xxx:=xxx.yyy
        • this slightly slowed down generate pass, because preprocessor is now called always
      • I rewrote many functions to don't use stack, but registers = shorter and faster from powerd.lib
      • Even() and Odd() flipped :)
      • local e-strings now works again
      • improved asm string writer, now You can use eg: '\0\0\0\0', to allocate 4 bytes long string of zeros
      • main code reader routine is rewritten to be faster
      • added Syntax Error (sorry :)
        • I finally added description of some errors in this document, very incomplete
        • this error currently quits powerd
      • added many new string extensions
      • removed some enforcer hits


    • Version 0.11 (17.1.2000)(dc.e: 11066 lines, 361271 bytes):
      • added ¸ (ascii 184) decimal number separator
      • improved LOOP x where x can be now constant/number
      • added binary module support (still very limited)
        • added MODULE OPTion
      • improved procedure/function finding routines, up to 28 times faster
      • added few new functions:
        • UByte(), UWord(), ULong(), HiBit(), LoHit(), BitCount(),BitSize()
      • improved startup files, arg variable now work
        • added startup_dosarg.m module and DOSARGONLY OPTion to allow arg variable with dos opening only
      • inlined IF now work better
      • added one new example
      • no more linker error like line too long or similar
      • removed some bugs in modules and added ExecBase variable
      • removed some other bugs


    Older history